package com.itheima.bigevents.service.impl;

import com.itheima.bigevents.mapper.UserMapper;
import com.itheima.bigevents.pojo.User;
import com.itheima.bigevents.service.UserService;
import com.itheima.bigevents.utils.Md5Util;
import com.itheima.bigevents.utils.ThreadLocalUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Map;


@Service
public class UserSerivceImpl implements UserService {


    //需要用到mapper中的与数据库相关的操作方法，需引入MAPPER接口，并注入到service中
    @Autowired
    private UserMapper userMapper;
    @Override
    public User findByUsername(String username) {
        return userMapper.findByUsername(username);
    }

    @Override
    public void register(String username, String password) {
        //  md5加密处理
        String md5Password = Md5Util.getMD5String(password);
        //  调用mapper中的插入方法
        userMapper.add(username, md5Password);
//        User user = new User();
//        user.setUsername(username);
//        user.setPassword(md5Password);
//        userMapper.insert(user);

    }

    @Override
    public boolean login(String username, String password) {
        //  md5加密处理
        String md5Password = Md5Util.getMD5String(password);
        //  调用mapper中的查询方法
        User user = userMapper.findByUsername(username);
        boolean bol;
        if (user == null) {
             bol = false;
        } else bol = user.getPassword().equals(md5Password);
        return bol;
    }

    @Override
    public void update(User user) {
        //  调用mapper中的更新方法
        //user.setUpdateTime(LocalDateTime.now()); // 更新时间
        userMapper.update(user);

    }

    @Override
    public void updateAvatar(String avatarUrl) {
        //  从ThreadLocalUtil中获取当前登录的用户id
        Map<String, Object>  map = ThreadLocalUtil.get();
        Integer id = (Integer) map.get("id");
        //  调用mapper中的更新方法
        userMapper.updateAvatar(avatarUrl,id);
    }

    @Override
    public void updatePassword(String newPassword) {
        //  从ThreadLocalUtil中获取当前登录的用户id
        Map<String, Object>  map = ThreadLocalUtil.get();
        Integer id = (Integer) map.get("id");
        //  md5加密处理
        String md5Password = Md5Util.getMD5String(newPassword);
        //  调用mapper中的更新方法
        userMapper.updatePassword(md5Password,id);
    }
}
